package com.iamteer.c_dbcp;

import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
import org.junit.Test;

public class App_DBCP {
	// 1. 硬编码方式实现连接池
	@Test
	public void testDbcp() throws Exception{
		// DBCP 连接池核心类
		BasicDataSource dataSource = new BasicDataSource();
		// 连接池参数配置：
		dataSource.setUrl("jdbc:mysql:///jdbc_demo");
		dataSource.setDriverClassName("com.mysql.jdbc.Driver");
		dataSource.setUsername("root");
		dataSource.setPassword("123456");
		dataSource.setInitialSize(3);	// 初始化连接数
		dataSource.setMaxActive(6);		// 最大连接数
		dataSource.setMaxIdle(3000);	// 最大空闲时间
		
		Connection con = dataSource.getConnection();
		con.prepareStatement("select * from admin").executeQuery();
		
		con.close();
		System.out.println(dataSource);
	}
	
	// 2. 配置方式实现连接池，便于维护
	@Test
	public void testProp() throws Exception{
		// 加载 prop 配置文件
		Properties prop = new Properties();
		// 获取文件流
		InputStream in = App_DBCP.class.getResourceAsStream("db.properties");
		// 加载属性配置文件
		prop.load(in);
		// 根据 prop 配置，直接创建数据源对象
		DataSource dataSource = BasicDataSourceFactory.createDataSource(prop);
		
		// 获取连接
		Connection con = dataSource.getConnection();
		con.prepareStatement("insert into admin(userName,pwd) values('rose','111111')").executeUpdate();
		
		//关闭
		con.close();
	}
}
